package matchs

import (
	"github.com/flipped-aurora/gin-vue-admin/server/global"
	"time"
)

// MatchSearchTask 找人任务表模型（记录用户发起的找人任务元数据）
type MatchSearchTask struct {
	global.GVA_MODEL
	UserID                uint64    `gorm:"column:user_id;type:bigint unsigned;not null;comment:'发起者用户ID（关联system.SysUser）'" json:"userId"`
	TargetProfessionalIDs string    `gorm:"column:target_professional_ids;type:varchar(512);not null;comment:'目标专业ID列表（JSON数组）'" json:"targetProfessionalIds"`
	FilterCity            string    `gorm:"column:filter_city;type:varchar(64);default:'';comment:'城市筛选（可选）'" json:"filterCity"`
	FilterGrade           string    `gorm:"column:filter_grade;type:varchar(32);default:'';comment:'年级/职级筛选（可选）'" json:"filterGrade"`
	SortStrategy          int8      `gorm:"column:sort_strategy;type:tinyint;not null;default:1;comment:'排序策略：1-最近登录 2-社区等级 3-互动率'" json:"sortStrategy"`
	Status                int8      `gorm:"column:status;type:tinyint;not null;default:0;comment:'任务状态：0-待处理 1-已推荐 2-已沟通 3-已结束 4-已取消 5-推荐失败'" json:"status"`
	FailReason            string    `gorm:"column:fail_reason;type:varchar(256);default:'';comment:'推荐失败原因'" json:"failReason"`
	ExpireAt              time.Time `gorm:"column:expire_at;type:datetime;not null;comment:'任务过期时间（默认创建后15天）'" json:"expireAt"`
}

// TableName 自定义表名（适配框架蛇形命名规范）
func (m *MatchSearchTask) TableName() string {
	return "match_find_task"
}

// 任务状态枚举（业务代码直接引用，避免硬编码）
const (
	MatchFindStatusPending         = 0 // 待处理（刚创建，未进入推荐队列）
	MatchFindStatusRecommended     = 1 // 已推荐（候选列表已生成，等待用户操作）
	MatchFindStatusCommunicating   = 2 // 已沟通（用户已与至少一个候选建立聊天）
	MatchFindStatusCompleted       = 3 // 已结束（聊天完成并评分）
	MatchFindStatusCancelled       = 4 // 已取消（用户主动取消任务）
	MatchFindStatusRecommendFailed = 5 // 推荐失败（无符合条件的候选用户）
)

// 排序策略枚举
const (
	MatchFindSortRecentLogin    = 1 // 按最近登录时间排序
	MatchFindSortCommunityLevel = 2 // 按社区等级排序
	MatchFindSortInteraction    = 3 // 按互动率排序
)
